// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.projectsettings.ui.internal; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.projectusus.projectsettings.core.WhichPrefs; public class SelectProjectPage extends WizardPage { private final List<IProject> projects; private IProject selectedProject; private List<WhichPrefs> whichPrefs = new ArrayList<WhichPrefs>(); public SelectProjectPage( List<IProject> projects ) { super( "SelectProjectPage" ); //$NON-NLS-1$ this.projects = projects; setTitle( "Select Project" ); //$NON-NLS-1$ setDescription( getDescriptionText() ); } protected String getDescriptionText() { return "Select a master project. Settings will be copied to the other projects."; //$NON-NLS-1$ } public void createControl( Composite parent ) { Composite composite = new Composite( parent, SWT.NULL ); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 1; composite.setLayout( gridLayout ); Label label = new Label( composite, SWT.NULL ); label.setText( getDescriptionText() ); createCheckbox( composite, "Copy Compiler Warnings Preferences", WhichPrefs.CompilerWarnings ); createCheckbox( composite, "Copy Codecompletion Preferences", WhichPrefs.CodeCompletion ); createCheckbox( composite, "Copy Formatting Preferences", WhichPrefs.Formatting ); createProjectsList( composite ); setControl( composite ); } private void createCheckbox( Composite composite, String label, WhichPrefs whichPref ) { Button checkbox = new Button( composite, SWT.CHECK ); checkbox.setText( label ); GridData gridData = new GridData(); checkbox.setLayoutData( gridData ); checkbox.addSelectionListener( new SelectWhichListener( checkbox, getWizard(), whichPrefs, whichPref ) ); } private void createProjectsList( Composite composite ) { ListViewer list = new ListViewer( composite, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL ); GridData gridData = new GridData( SWT.FILL, SWT.FILL, true, true ); list.getList().setLayoutData( gridData ); list.setContentProvider( new ArrayContentProvider() ); list.setLabelProvider( new ProjectsLabelProvider() ); list.setInput( projects ); initListener( list ); } private void initListener( ListViewer list ) { list.addSelectionChangedListener( new ISelectionChangedListener() { public void selectionChanged( SelectionChangedEvent event ) { IStructuredSelection selection = (IStructuredSelection)event.getSelection(); setSelectedProject( (IProject)selection.getFirstElement() ); getWizard().getContainer().updateButtons(); } } ); } public IProject getSelectedProject() { return selectedProject; } public void setSelectedProject( IProject selectedProject ) { this.selectedProject = selectedProject; } public boolean isProjectSelected() { return getSelectedProject() != null; } public WhichPrefs[] getWhichPrefs() { return whichPrefs.toArray( new WhichPrefs[whichPrefs.size()] ); } }